/**
 * @addtogroup time_codec.h
 * time_codec.h
 * @{
 */
/**
 * @file         ofc_time_codec.h
 * @brief        时间编码相关库
 * @note    
 * @author       Leo
 * @date         2020-2-7
 * @version      1.2
 *
 * @par          修改日志
 * <table>
 * <tr><th>Date        <th>Version               <th>Author          <th>Description
 * <tr><td>2018-11-16   <td>1.0                   <td>Leo            <td>创建初始版本
 * <tr><td>2019-09-20   <td>1.1                  <td>Akee            <td>从Rfc库移植过来
 * <tr><td>2020-02-07   <td>1.2                  <td>Akee            <td>修改叶工评审部分内容
 * @copyright    杭州鸿泉物联网技术股份有限公司
 */
#ifndef _OFC_TIME_CODEC_H_
#define _OFC_TIME_CODEC_H_

#include "ofc_types.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * 获取时间为time的那一天是这个星期里面的第几天
 * @param time: time_t类型的时间
 * @return 返回1到7,对应周日,周一,...,周六
 */
Int32 OfDayOfWeek(TTime time);

/**
 * 判断年year是否为闰年
 * @param year: 需要判断的年份
 * @return 闰年返回True,否则为False
 */
Bool OfIsLeapYear(Int32 year);

/**
 * 将分开的时间组合成time_t格式.
 * @note 本函数不检查参数的有效性
 * @param year: 年
 * @param month: 月,1 ~ 12
 * @param day: 日
 * @param hour: 时
 * @param minute: 分
 * @param second: 秒
 * @return 返回组合的time_t类型的时间
 */
TTime OfEncodeDateTime(Word year, Word month, Word day, Word hour, Word minute, Word second);

/**
 * 将time_t格式的时间分解成年月日时分秒
 * @param time: 1970.1.1 00:00:00到现在的秒数
 * @param year: 返回年
 * @param month: 返回月, 1 ~ 12
 * @param day: 返回日
 * @param hour: 返回时
 * @param minute: 返回分
 * @param second: 返回秒
 * @note 本函数不检查参数的有效性
 * @return 
 */
void OfDecodeDateTime(TTime time, Word *year, Word *month, Word *day, Word *hour, Word *minute, Word *second);

/**
 * 将time_t格式的时间分解成年月日
 * @param time: 1970.1.1 00:00:00到现在的秒数
 * @param year: 返回年
 * @param month: 返回月,1 ~ 12
 * @param day: 返回日
 * @note 本函数不检查参数的有效性
 * @return
 */
void OfDecodeDate(TTime time, Word *year, Word *month, Word *day);

/**
 * 将time_t格式的时间分解成时分秒
 * @param time: 1970.1.1 00:00:00到现在的秒数
 * @param hour: 返回时
 * @param minute: 返回分
 * @param second: 返回秒
 * @note 本函数不检查参数的有效性
 * @return
 */
void OfDecodeTime(TTime time, Word *hour, Word *minute, Word *second);

#ifdef __cplusplus
}  // extern "C"
#endif

#endif  // _OFC_TIME_CODEC_H_

/**
 * @}
 */
